#include "lista_encad_cab_ord.h"

int imprime_op()
{
	int op;

	do
	{
		printf("---------------- Qual a operacao? -----------------\n");
		printf(" [1] - Inserir um elemento à lista\n");
		printf(" [2] - Remover um elemento da lista\n");
		printf(" [3] - Remover todas as ocorrencias do elemento na lista\n");
		printf(" [4] - Inserir elemento no final da lista\n");
		printf(" [5] - Remover os elementos impares\n");
		printf(" [6] - Mostrar o menor elemento da lista\n");
		printf(" [7] - Quantidade de elementos da lista\n");
		printf(" [8] - Concatenar duas listas\n");
		printf(" [9] - Imprimir lista atual\n");
		printf("[10] - Sair do programa\n");
		printf("Operacao: "); setbuf(stdin,NULL);
		scanf("%d", &op);
	} while(op < 0 || op > 11);

	return op;
}

int imprime_op2()
{
	int op;

	do
	{
		printf("---------------- Qual a operacao p/ 2da lista? -----------------\n");
		printf("(1) - Inserir um elemento à uma segunda lista\n");
		printf("(2) - Remover um elemento da segunda lista\n");
		printf("(3) - Imprimir a segunda lista\n");
		printf("(4) - Concatenar as duas listas\n");
		printf("(5) - Sair do programa da segunda lista\n");
		printf("Operacao: "); setbuf(stdin,NULL);
		scanf("%d", &op);
	} while(op < 0 || op > 11);
}

int main(void)
{
	int elemento, op = -1, op2, op_lista = 0;
	Lista L1 = cria_lista();
	Lista L2 = cria_lista();

	system("clear");
	while(op != 10)
	{
		op = imprime_op();
		switch(op)
		{
			case 1:
				printf("Elemento a ser inserido: ");
				scanf("%d", &elemento);
				if(insere_ord(&L1, elemento))
					printf("Elemento inserido!\n");
				else
					printf("Elemento nao inserido!\n");
				getchar();
				break;
			case 2:
				printf("Qual elemento sera removido? ");
				scanf("%d", &elemento);
				if(remove_ord(&L1, elemento))
					printf("Elemento removido\n");
				else
					printf("Elemento nao removido\n");
				getchar();
				break;
			case 3:
				printf("Qual elemento sera removido em todas as ocorrencias? ");
				scanf("%d", &elemento);
//				if(remove_todos(&L1, elemento))
//					printf("Elementos removidos!\n");
//				else
//					printf("Os elementos não foram removidos\n");
				break;
			case 4:
				printf("Qual elemento seria inserido no inicio da lista? ");
				scanf("%d", &elemento);
//				if(insere_final(&L1, elemento))
//					printf("Elemento inserido no final!\n");
//				else
//					printf("Elemento nao foi inserido no final!\n");
				break;
			case 5:
				printf("Eliminando os elementos impares...\n");
				if(remove_impares(&L1))
					printf("Imprima a lista para ver o resultado.\n");
				else
					printf("Erro!\n");
				break;
			case 6:
				printf("Capturando o menor elemento da lista...\n");
				menor_elem_lista(&L1);
				break;
			case 7:
				tamanho_lista(&L1);
				break;
			case 8:
				printf("Não existe uma segunda lista para concatenar...\n");
//				while((op2 = imprime_op2()) != 5)
//				{
//					switch(op2)
//					{
//						case 1:
//							printf("Inserir em qual lista? ");
//							scanf("%d", &op_lista);
//							if(op_lista == 1)
//							{
//								printf("Elemento a ser inserido: ");
//								scanf("%d", &elemento);
//								if(insere_elem(L1, elemento))
//									printf("Elemento inserido na lista 1\n");
//								else
//									printf("Elemento nao inserido!\n");
//							}
//							else if(op_lista == 2)
//							{
//								printf("Elemento a ser inserido: ");
//								scanf("%d", &elemento);
//								if(insere_elem(L2, elemento))
//									printf("Elemento inserido na lista 2\n");
//								else
//									printf("Elemento nao inserido!\n");
//							}
//							else
//								break;
//							getchar();
//							break;
//						case 2:
//							printf("Remover de qual lista? ");
//							scanf("%d", &op_lista);
//							if(op_lista == 1)
//							{
//								printf("Elemento a ser removido: ");
//								scanf("%d", &elemento);
//								if(remove_elem(L1, elemento))
//									printf("Elemento removido da lista 1\n");
//								else
//									printf("Elemento nao removido!\n");
//							}
//							else if(op_lista == 2)
//							{
//								printf("Elemento a ser inserido: ");
//								scanf("%d", &elemento);
//								if(remove_elem(L2, elemento))
//									printf("Elemento removido na lista 2\n");
//								else
//									printf("Elemento nao removido!\n");
//							}
//							else
//								break;
//							getchar();
//							break;
//						case 3:
//							printf("Imprimir qual lista? ");
//							scanf("%d", &op_lista);
//
//							if(op_lista == 1)
//								imprime_lista(L1);
//
//							else if(op_lista == 2)
//								imprime_lista(L2);
//							else
//								break;
//							getchar();
//							break;
//						case 4:
//							printf("Lista 3: "); imprime_lista(concatenar_lista(L1,L2));
//							break;
//					}
//					setbuf(stdin,NULL);
//					getchar();
//					system("clear");
//				}
				//else concatenar_lista(L1,L2);
				break;
			case 9:
				system("clear");
				imprime_lista(L1);
				break;
		}
		setbuf(stdin,NULL);
		if(op == 10)
			return 0;
		getchar();
		system("clear");
	}
	free(L1);
	free(L2);
	return 0;
}



